PROG 366 Algorithms Learn fundamental principles of algorithm design as you work with practical data structures (such as heaps and trees) and common algorithms (such as sort and search). At the end of the semester you will have a library of code you can use in future problem-solving, and a project showcasing your skills.